﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIPDTO;

namespace SIP
{
    public partial class Funcionarios : System.Web.UI.Page
    {

        #region ** Declaración de variables
        SIPBLL.SIPBLL _bll = new SIPBLL.SIPBLL();
        dtoError _resp = new dtoError();
        dtoUsuario dtfuncionario = new dtoUsuario();
        dtoUsuario _dtopersonas = new dtoUsuario();
        List<dtoUsuario> _dtpersonas = new List<dtoUsuario>();
        List<dtoTiposIdentificacion> _dttiposid = new List<dtoTiposIdentificacion>();
        List<dtoDiocesis> _dtdiocesis = new List<dtoDiocesis>();
        List<dtoPerfil> _dtperfil = new List<dtoPerfil>();
        List<dtoParroquia> _dtparroquia = new List<dtoParroquia>();
        dtoParroquia _dtoparroquia = new dtoParroquia();

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ObtenerDiocesis();
                ObtenerPerfiles();
                ddlParroquia.Items.Insert(0, new ListItem("Seleccionar Parroquia", "0"));
                if (Convert.ToBoolean(Session["Crear"]) == true)
                {
                    CleanControl(this.Controls);
                    ActivarBotones();
                }
                else
                {
                    BuscarUsuario();
                    DesactivarBotones();

                }
            }
        }

       protected void ddlDiocesis_SelectedIndexChanged(object sender, EventArgs e)
        {
            ObtenerParroquia();
        }

         /// <summary>
         /// Registra y modifica la información de los usuarios
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
        protected void Registrar(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid == true)
                {
                    if ((Convert.ToInt16((ddlDiocesis).SelectedValue) != 0) || (Convert.ToInt16((ddlParroquia).SelectedValue) != 0) || (Convert.ToInt16((ddlPerfil).SelectedValue) != 0))
                    {
                        if (Convert.ToBoolean(Session["Crear"]) == true)
                        {
                         
                            dtfuncionario.Usuario = txtNombre.Text;
                            dtfuncionario.Password = Password.Text;
                            dtfuncionario.Perfil = Convert.ToInt16(ddlPerfil.SelectedValue);
                            dtfuncionario.Parroquia = Convert.ToInt16(ddlParroquia.SelectedValue);
                            if (chkactivo.Checked == true)
                            {
                                dtfuncionario.Estado = true;
                            }
                            else
                            {
                                dtfuncionario.Estado = false;
                            }

                            // Se crea el funcionario
                            _resp = _bll.CrearUsuario(dtfuncionario,1);
                            CleanControl(this.Controls);
                            WebMsgBox.Show(_resp.Mensaje);
                        }
                         else // actualiza la información del usuario
                            {
                                dtfuncionario.Usuario = txtNombre.Text;
                                dtfuncionario.Password = Password.Text;
                                dtfuncionario.Perfil = Convert.ToInt16(ddlPerfil.SelectedValue);
                                dtfuncionario.Parroquia = Convert.ToInt16(ddlParroquia.SelectedValue);
                                    if (chkactivo.Checked == true)
                                    {
                                        dtfuncionario.Estado = true;
                                    }
                                    else
                                    {
                                        dtfuncionario.Estado = false;
                                    }
                                // se modifica el usuario en la tabla Usuarios
                                    _resp = _bll.CrearUsuario(dtfuncionario,2);
                                    if (_resp.IdError == 100)
                                    {
                                        WebMsgBox.Show(_resp.Mensaje);
                                        Response.Redirect("ListadoUsuarios.aspx");
                                    }
                                    else
                                    {
                                        WebMsgBox.Show(_resp.Mensaje);
                                    }
                             }
                    }
                     else 
                        { 
                            WebMsgBox.Show("Exiten campos pendientes de completar, por favor verifique Diócesis, Parroquia y Perfil"); 
                        }
                }
            }
            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
                WebMsgBox.Show(_resp.Mensaje);
            }
        }

        /// <summary>
        /// Obtiene la información del usuario y lo carga en pantalla
        /// </summary>
        private void BuscarUsuario() 
        {

            _dtopersonas.Usuario = Convert.ToString(Session["Usuario"]);
            _dtpersonas = _bll.ObtenerUsuario(_dtopersonas);
            txtNombre.Text = _dtpersonas[0].Usuario;
            ddlParroquia.SelectedValue = Convert.ToString(_dtpersonas[0].Parroquia);
            _dtparroquia = _bll.ObtenerParroquia(Convert.ToInt16(_dtpersonas[0].Parroquia));
            ddlDiocesis.SelectedValue = Convert.ToString(_dtparroquia[0].IdDiocesis);
            ddlPerfil.SelectedValue = Convert.ToString(_dtpersonas[0].Perfil);
            ObtenerDiocesis();
            if (Convert.ToBoolean(_dtpersonas[0].Estado) == true)
            {
                chkactivo.Checked = true;
            }
            else
            {
                chkactivo.Checked = false;
            }
        }

        protected void Cancelar(object sender, EventArgs e)
        {
            Response.Redirect("ListadoUsuarios.aspx"); // Retorna al listado de usuarios
        }

        #region ** Validaciones

        public void CleanControl(ControlCollection controles)
        {
            foreach (Control control in controles)
            {
                if (control is TextBox)
                    ((TextBox)control).Text = string.Empty;
                else if (control is DropDownList)
                    ((DropDownList)control).ClearSelection();
                else if (control is RadioButtonList)
                    ((RadioButtonList)control).ClearSelection();
                else if (control is CheckBoxList)
                    ((CheckBoxList)control).ClearSelection();
                else if (control is RadioButton)
                    ((RadioButton)control).Checked = false;
                else if (control is CheckBox)
                    ((CheckBox)control).Checked = false;
                else if (control.HasControls())   //Esta linea detécta un Control que contenga otros Controles                    
                    //Así ningún control se quedará sin ser limpiado.                   
                    CleanControl(control.Controls);
            }
        }

        public void DesactivarBotones()
        {
            txtNombre.Enabled = false;
            ddlDiocesis.Enabled = false;
            ddlParroquia.Enabled = false;
            ddlPerfil.Enabled = true;
            Password.Enabled = true;
            ConfirmPassword.Enabled = true;

        }

        public void ActivarBotones()
        {
            txtNombre.Enabled = true;
            ddlDiocesis.Enabled = true;
            ddlParroquia.Enabled = true;
            ddlPerfil.Enabled = true;
            Password.Enabled = true;
            ConfirmPassword.Enabled = true;
        }

        #endregion

        #region ** Llenado de combos

        public void ObtenerDiocesis()
        {
            _dtdiocesis = _bll.ObtenerDiocesis();
            ddlDiocesis.DataSource = _dtdiocesis;
            ddlDiocesis.DataValueField = "Identificacion";
            ddlDiocesis.DataTextField = "Descripcion";
            ddlDiocesis.DataBind();
            ddlDiocesis.Items.Insert(0, new ListItem("Seleccionar Diócesis", "0"));
        }

        public void ObtenerParroquia()
        {
            _dtoparroquia.IdDiocesis = Convert.ToInt16(ddlDiocesis.SelectedValue);
            _dtparroquia = _bll.ObtenerParroquiaxDiocesis(_dtoparroquia);
            ddlParroquia.Enabled = true;
            ddlParroquia.DataSource = _dtparroquia;
            ddlParroquia.DataValueField = "IdParroquia";
            ddlParroquia.DataTextField = "Descripcion";
            ddlParroquia.DataBind();
            ddlParroquia.Items.Insert(0, new ListItem("Seleccionar Parroquia", "0"));

        }

        public void ObtenerPerfiles()
        {
            _dtperfil = _bll.ObtenerPerfil();
            ddlPerfil.DataSource = _dtperfil;
            ddlPerfil.DataValueField = "IdPerfil";
            ddlPerfil.DataTextField = "Descripcion";
            ddlPerfil.DataBind();
            ddlPerfil.Items.Insert(0, new ListItem("Seleccionar Perfil", "0"));
        }

        #endregion
    }
}